Field of the Invention
Embodiments of the present invention relate generally to three-dimensional (3D) graphics processing and, more particularly, to state handling in a tiled architecture.
Description of the Related Art
When processing graphics primitives in a graphics subsystem to generate a rendered image, different primitives may be processed with different state applied to those primitives. For example, a primitive may be processed with a state of opaque, meaning that the primitive is not rendered with any transparency. A different primitive may be processed with a state of partially transparent, meaning that the primitive is rendered with some amount of color blending applied. To process different primitives with different states, a graphics subsystem typically receives a number of render commands interleaved with state change commands as well as the primitives being rendered. Each state change command changes the state for primitives that arrive after the state change command.
Some graphics subsystems implement a tiling architecture in which a render target is divided into partitions referred to as tiles. In such an architecture, the primitives received from a graphics application are reordered for rendering based on the tiles that the primitives overlap. This technique generally can increase processing performance. For further improved performance, multiple processing entities may be provided to process the different tiles in parallel.
One challenging aspect of processing data in a tiling architecture is managing state changes. In particular, the reordering of primitives in a tiling architecture complicates the tasks of tracking state changes and applying those state changes in the correct order to the primitives being rendered. Consequently, when primitives are reordered in a tiling architecture, specific steps need to be taken to ensure that state changes are applied to the primitives being rendered in accordance with application-programming-interface (API) order. Such state change management issues are exacerbated in tiling architectures that are highly parallel.
As the foregoing illustrates, what is needed in the art is an effective way to manage and apply state changes when primitives are processed in a highly parallel tiled architecture.